#include <cstdio>
#include <stdarg.h>
#include <iostream>
#include <unistd.h>
int FindMaxData(int num, ...)
{
    // 可变参数中如果是短整型(char short float)等一般要进行int类型整形提升
    va_list arg;                // va_list类型是char*
    va_start(arg, num);         // 通过第一个参数让arg指向可变参数部分
    int max = va_arg(arg, int); // 把当前元素提取出来, arg指向下一个待访问元素
    for (int i = 1; i < num; i++)
    {
        int curr = va_arg(arg, int);
        if (curr > max)
            max = curr;
    }
    va_end(arg); // 就是将arg = NULL或将arg = 0
    return max;
}
void test()
{
    int max = FindMaxData(5, 11, 21, 31, 41, 51);
    printf("max = %d\n", max);
}
void test1()
{
    char a = 'a';
    char b = 'b';
    char c = 'c';
    char d = 'd';
    char e = 'e';
    int max = FindMaxData(5, a, b, c, d, e);
    printf("max = %d\n", max);
}
int main()
{
    test();
    test1();
    return 0;
}